Apex Governor Limits হলো Salesforce-এর নির্ধারিত কিছু সীমাবদ্ধতা, যা Apex কোড চালানোর সময় বিভিন্ন রিসোর্সের ব্যবহার সীমাবদ্ধ করে। Salesforce একটি মাল্টি-টেন্যান্ট পরিবেশ হওয়ায়, প্রত্যেকটি অর্গকে নির্দিষ্ট সীমার মধ্যে রিসোর্স ব্যবহারের নির্দেশ দেয়া হয়। Apex Governor Limits ডেটা প্রসেসিং, স্টোরেজ, এবং পারফরম্যান্স ব্যবস্থাপনা নিশ্চিত করে, যাতে প্ল্যাটফর্মে ভারসাম্য বজায় থাকে এবং সকল ব্যবহারকারী নির্ধারিত রিসোর্স পায়।
Governor Limits এর মূল কারণ হলো Salesforce প্ল্যাটফর্মের স্থায়িত্ব ও পারফরম্যান্স নিশ্চিত করা। মাল্টি-টেন্যান্ট আর্কিটেকচারে একটি একক সার্ভার হাজার হাজার ব্যবহারকারী শেয়ার করে, তাই এক ব্যবহারকারী যেন অতিরিক্ত রিসোর্স ব্যবহার করে অন্যদের পারফরম্যান্সে প্রভাব না ফেলে, সেজন্য Governor Limits ব্যবহার করা হয়।
Salesforce প্ল্যাটফর্মে বিভিন্ন কার্যক্রমের উপর নির্দিষ্ট সীমা নির্ধারণ করা হয়েছে। Apex Governor Limits এর কয়েকটি গুরুত্বপূর্ণ সীমাবদ্ধতা নিচে উল্লেখ করা হলো:
DML Statements Limit:
insert
, update
, delete
ইত্যাদি)।SOQL Queries Limit:
SOSL Queries Limit:
CPU Time Limit:
Heap Size Limit:
Callouts Limit:
Future Methods Limit:
Email Limit:
Queueable Jobs Limit:
Query Rows Limit:
Governor Limits মেনে চলার জন্য কিছু কার্যকর কৌশল নিচে দেয়া হলো:
Bulkify Apex Code:
Efficient Querying:
Efficient Data Processing with Collections:
Avoid Hardcoding Limits:
Utilize @future and Queueable Apex:
@future
এবং Queueable Apex ব্যবহার করা উচিত, যা পৃথক ট্রানজ্যাকশনে কার্যক্রম সম্পন্ন করে।Caching and Batching:
নিচে একটি Bulkified Apex কোড উদাহরণ দেখানো হলো, যেখানে Account
অবজেক্টের উপর DML অপারেশন করা হয়েছে।
public class AccountHandler {
public static void updateAccounts(List<Account> accounts) {
List<Account> updateAccounts = new List<Account>();
for (Account acc : accounts) {
if (acc.Industry == 'Technology') {
acc.Rating = 'Hot';
updateAccounts.add(acc);
}
}
// Bulk DML Operation
if (!updateAccounts.isEmpty()) {
update updateAccounts;
}
}
}
updateAccounts
মেথডে একাধিক Account
রেকর্ডের উপর Bulk DML অপারেশন চালানো হয়েছে।updateAccounts.add(acc)
লিস্ট ব্যবহার করে একত্রে update
DML অপারেশন চালানো হয়েছে।যদি কোনো Apex কোড Governor Limits লঙ্ঘন করে, তবে তৎক্ষণাৎ একটি System.LimitException তৈরি হয় এবং কোডটি ব্যর্থ হয়। এ কারণে Governor Limits লঙ্ঘন না করা অত্যন্ত গুরুত্বপূর্ণ।
Apex Governor Limits মেনে কোড লেখা হলে Salesforce প্ল্যাটফর্মের রিসোর্স ব্যবহার কার্যকরী ও নির্ভরযোগ্য হয়, যা ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে এবং অ্যাপ্লিকেশনকে স্থায়িত্ব দেয়।
Apex Governor Limits হলো Salesforce-এর একটি নিয়ম, যা একটি Apex কোড ব্লকে ব্যবহৃত রিসোর্সের পরিমাণ নির্ধারণ ও সীমিত করে। Salesforce একটি মাল্টি-টেন্যান্ট প্ল্যাটফর্ম, যার মানে একাধিক ব্যবহারকারী একই শারীরিক সার্ভার শেয়ার করে। এর ফলে, Salesforce নিশ্চিত করে যে, একটি ব্যবহারকারীর কোড বা প্রক্রিয়া সার্ভারের অতিরিক্ত রিসোর্স না নেয় এবং অন্য ব্যবহারকারীদের কার্যক্রমে ব্যাঘাত সৃষ্টি না করে।
Apex Governor Limits ব্যবহার করে Salesforce প্রতিটি অ্যাপ্লিকেশন বা কোড ব্লকের জন্য নির্দিষ্ট রিসোর্সের সীমা নির্ধারণ করে, যেমন DML অপারেশনের সংখ্যা, SOQL কুয়েরির সংখ্যা, API কলের সংখ্যা ইত্যাদি। যদি কোনো Apex কোড Governor Limits অতিক্রম করে, তবে Salesforce একটি Exception তৈরি করে এবং কোড এক্সিকিউশন বন্ধ করে দেয়।
সার্ভার পারফরম্যান্স নিশ্চিতকরণ: Governor Limits নিশ্চিত করে যে একাধিক ব্যবহারকারী একই শারীরিক সার্ভারে কাজ করলেও সার্ভারের কার্যক্ষমতা বজায় থাকে এবং সার্ভারে অতিরিক্ত লোড পড়ে না।
রিসোর্স ব্যবহারের সামঞ্জস্য রক্ষা: Apex কোড সীমার মধ্যে থেকে রিসোর্স ব্যবহার করে, যাতে অন্য ব্যবহারকারীদের কার্যক্রমে ব্যাঘাত না ঘটে।
ত্রুটি সনাক্তকরণ: Governor Limits-এর কারণে উন্নয়নকারীরা দ্রুত জানতে পারেন কোড কোথায় অতিরিক্ত রিসোর্স ব্যবহার করছে এবং সঠিক অপটিমাইজেশন করে কোড কার্যক্ষমতা উন্নত করতে পারেন।
সিস্টেম স্থায়িত্ব এবং নিরাপত্তা নিশ্চিতকরণ: Governor Limits নিশ্চিত করে যে কোনো ব্যবহারকারী বা কোড সার্ভারের অতিরিক্ত রিসোর্স নিয়ে পুরো সিস্টেমের কার্যক্ষমতা বা নিরাপত্তার জন্য ঝুঁকি তৈরি না করে।
Salesforce-এ বিভিন্ন ধরনের Governor Limits রয়েছে, যা বিভিন্ন কার্যক্রমে রিসোর্স ব্যবহারের সীমা নির্ধারণ করে। Apex-এর প্রধান Governor Limits এর কিছু উদাহরণ নিচে দেয়া হলো।
SOQL Query Limits: একটি Transaction-এ সর্বাধিক ১০০টি SOQL কুয়েরি চালানো যায়। এটি Bulk SOQL Query ব্যবহার করে কোড অপ্টিমাইজেশনে সহায়ক।
DML Statement Limits: একটি Transaction-এ সর্বাধিক ১৫০টি DML অপারেশন চালানো যায়, যেমন insert
, update
, delete
ইত্যাদি। এটি Bulk DML ব্যবহার করে কোড কার্যক্ষমতা উন্নত করতে সহায়ক।
CPU Time Limit: একটি Transaction-এ Apex কোডের জন্য সর্বাধিক CPU সময় ১০,০০০ মিলিসেকেন্ড (আনুমানিক ১০ সেকেন্ড)।
Heap Size Limit: একটি Transaction-এ সর্বাধিক ৬ এমবি হিপ মেমোরি ব্যবহার করা যায়। এটি বড় ডেটা প্রসেসিং-এর সময় কোড কার্যক্ষমতা নিশ্চিত করে।
Callout Limit: একটি Transaction-এ সর্বাধিক ১০০টি HTTP বা API কলআউট করা যায়। এটি বহিরাগত সার্ভারে কল করার সীমা নির্ধারণ করে।
Total Number of Records Retrieved by SOQL Queries: একটি Transaction-এ সর্বাধিক ৫০,০০০টি রেকর্ড SOQL কুয়েরি দ্বারা রিটার্ন করা যায়। এটি বড় ডেটাসেটের জন্য কাজের কার্যক্ষমতা উন্নত করে।
Number of Future Calls: একটি Transaction-এ সর্বাধিক ৫০টি Future Method কল করা যায়।
নিচের উদাহরণে SOQL এবং DML অপারেশন সীমার মধ্যে রাখা হয়েছে।
public class AccountManager {
public void updateAccountIndustry(List<Id> accountIds) {
// Governor Limit মেনে Bulk SOQL Query ব্যবহার করা হয়েছে
List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
for (Account acc : accounts) {
acc.Industry = 'Technology';
}
// Governor Limit মেনে Bulk DML Statement ব্যবহার করা হয়েছে
update accounts;
}
}
যদি কোনো Apex কোড Governor Limits অতিক্রম করে, তবে Salesforce একটি Unhandled Exception তৈরি করে, যার ফলে Transaction বন্ধ হয়ে যায় এবং প্রক্রিয়াটি সম্পন্ন হয় না। উদাহরণস্বরূপ, SOQL কুয়েরির সংখ্যা ১০০ এর বেশি হলে Too Many SOQL Queries Exception তৈরি হয়।
try {
// কোড যা Governor Limits অতিক্রম করতে পারে
} catch (Exception e) {
System.debug('Exception Occurred: ' + e.getMessage());
}
catch
ব্লক সেই Exception ক্যাপচার করবে।Bulkification: একাধিক রেকর্ড একত্রে প্রক্রিয়া করতে Bulk SOQL ও Bulk DML অপারেশন ব্যবহার করা উচিত। উদাহরণ: Loop-এর ভিতরে DML অপারেশন ব্যবহার না করে Loop-এর বাইরে একবারে প্রক্রিয়া করা।
Collection ব্যবহার: অনেক রেকর্ড নিয়ে কাজ করার সময় List, Set, বা Map ব্যবহার করা উচিত, যাতে কোড আরও কার্যকর ও সীমার মধ্যে থাকে।
Efficient Querying: Query-তে শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো উল্লেখ করুন এবং যেখানে সম্ভব LIMIT
ব্যবহার করুন, যা CPU এবং SOQL ব্যবহার সীমার মধ্যে রাখে।
Avoid Recursive Trigger: Trigger-এর মধ্যে Recursive Loop এড়িয়ে চলা উচিত, যাতে Governor Limit অতিক্রম না হয়।
Asynchronous Processing: বড় ডেটা প্রসেসিং বা লং-রানিং অপারেশনের জন্য Asynchronous Apex যেমন Future Method, Queueable Apex, Batch Apex ব্যবহার করা।
Apex Governor Limits Salesforce প্ল্যাটফর্মে কোড এক্সিকিউশন ও রিসোর্স ব্যবহারের সীমা নির্ধারণ করে, যা সার্ভারের স্থায়িত্ব, কার্যক্ষমতা, এবং নিরাপত্তা নিশ্চিত করে। Governor Limits Apex ডেভেলপারদেরকে কার্যকরী কোড অপ্টিমাইজ করতে সহায়ক এবং Salesforce প্ল্যাটফর্মে কার্যক্ষম ও সীমাবদ্ধতা বজায় রেখে কাজ করতে উৎসাহিত করে।
Salesforce-এ SOQL, SOSL, এবং DML অপারেশনের উপর কিছু নির্দিষ্ট Governor Limits রয়েছে, যা Apex কোড চালানোর সময় নির্ধারিত রিসোর্সের সীমা নিয়ন্ত্রণ করে। এসব লিমিট নিশ্চিত করে যে Apex কোড মাল্টি-টেন্যান্ট আর্কিটেকচারের মধ্যে ভারসাম্য রক্ষা করে এবং অতিরিক্ত রিসোর্স ব্যবহারের কারণে অন্য ব্যবহারকারীদের পারফরম্যান্সের উপর প্রভাব না পড়ে।
SOQL কুয়েরি চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা মেনে চলতে হয়, যা নিম্নরূপ:
SOQL Queries per Transaction:
Query Rows Returned:
Total Number of Records Retrieved:
List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 100];
LIMIT
ক্লজ ব্যবহার করে SOQL কুয়েরির মাধ্যমে ডেটা সীমাবদ্ধ করা হয়েছে।SOSL কুয়েরি চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা আছে, যা নিম্নরূপ:
OFFSET
বা পেজিনেশন ব্যবহার করতে হতে পারে।List<List<SObject>> searchResults = [FIND 'Tech' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName) LIMIT 2000];
LIMIT
ব্যবহার করে কুয়েরি দ্বারা প্রাপ্ত রেকর্ড সংখ্যা ২০০০ এর মধ্যে সীমাবদ্ধ করা হয়েছে।DML অপারেশন চালানোর সময় কিছু নির্দিষ্ট সীমাবদ্ধতা আছে, যা নিম্নরূপ:
DML Statements per Transaction:
Total DML Rows Processed:
Batch Apex
বা Queueable Apex
ব্যবহার করে রেকর্ড প্রক্রিয়াকরণ করতে হবে।Nesting DML Operations:
List<Account> accountList = new List<Account>();
for (Integer i = 1; i <= 10000; i++) {
accountList.add(new Account(Name = 'Account ' + i));
}
// Bulk DML Operation to stay within DML row limits
insert accountList;
accountList
এ একবারে ১০,০০০টি রেকর্ড ইন্সার্ট করা হয়েছে।অপারেশন | লিমিট | বিবরণ |
---|---|---|
SOQL Queries | ১০০ (সিঙ্ক্রোনাস), ২০০ (অ্যাসিঙ্ক্রোনাস) | প্রতি ট্রানজ্যাকশনে সর্বাধিক SOQL কুয়েরি সংখ্যা |
SOQL Query Rows | ৫০,০০০ রো | একটি ট্রানজ্যাকশনে সর্বাধিক রিটার্ন হওয়া রো সংখ্যা |
SOSL Queries | ২০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক SOSL কুয়েরি সংখ্যা |
SOSL Query Rows | ২০০০টি | প্রতি SOSL কুয়েরিতে সর্বাধিক রিটার্ন হওয়া রো সংখ্যা |
DML Statements | ১৫০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক DML স্টেটমেন্ট সংখ্যা |
DML Rows Processed | ১০,০০০টি | প্রতি ট্রানজ্যাকশনে সর্বাধিক DML প্রক্রিয়াকৃত রেকর্ড সংখ্যা |
@future
এবং Queueable মেথড ব্যবহার করুন।Governor Limits মেনে Apex কোড লেখা Salesforce প্ল্যাটফর্মের জন্য অত্যন্ত গুরুত্বপূর্ণ, যা মাল্টি-টেন্যান্ট পরিবেশে ডেটা ম্যানিপুলেশন ও ডেটা প্রসেসিং কার্যকরভাবে পরিচালনা করতে সহায়ক।
Apex Heap Size এবং CPU Time Limit Salesforce-এ কোডের কার্যক্ষমতা ও কার্যক্ষম সীমার মধ্যে কার্যক্রম পরিচালনা করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Heap Size হলো এমন একটি সীমা, যা একটি Transaction চলাকালীন মেমোরিতে সংরক্ষিত ডেটার সর্বোচ্চ আকারকে নির্ধারণ করে। Apex-এ একটি Transaction চলাকালীন সর্বাধিক ৬ এমবি (Synchronous Apex) এবং ১২ এমবি (Asynchronous Apex) পর্যন্ত Heap Size ব্যবহার করা যায়। যদি Heap Size লিমিট অতিক্রম করে, তাহলে একটি "Apex heap size too large" Exception তৈরি হয় এবং Transaction বন্ধ হয়ে যায়।
null
সেট করুন।public class HeapSizeExample {
public void processLargeData() {
List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 1000];
// প্রয়োজন শেষে বড় ডেটাসেট ক্লিয়ার করা
accounts = null;
System.debug('Heap Size optimized by clearing unused data');
}
}
CPU Time Limit হলো এমন একটি সীমা, যা একটি Transaction-এ কোড এক্সিকিউশনের সময় নির্ধারণ করে। Salesforce একটি Transaction-এ সর্বাধিক ১০,০০০ মিলিসেকেন্ড (১০ সেকেন্ড) পর্যন্ত CPU সময় বরাদ্দ করে। যদি কোনো Transaction CPU Time Limit অতিক্রম করে, তবে "Apex CPU time limit exceeded" Exception তৈরি হয় এবং Transaction বন্ধ হয়ে যায়।
public class CPUTimeExample {
public void processData() {
List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 100];
// Loop-এর ভিতরে DML এড়িয়ে চলা
for (Account acc : accounts) {
acc.Name = acc.Name + ' Updated';
}
// Loop-এর বাইরে DML অপারেশন ব্যবহার করা
update accounts;
System.debug('CPU Time optimized by avoiding DML inside loop');
}
}
বৈশিষ্ট্য | Heap Size | CPU Time Limit |
---|---|---|
প্রধান উদ্দেশ্য | মেমোরিতে ডেটা সংরক্ষণের সীমা নির্ধারণ | কোড এক্সিকিউশনের CPU সময় নির্ধারণ |
সীমা | Sync-এ ৬ এমবি, Async-এ ১২ এমবি | ১০,০০০ মিলিসেকেন্ড (১০ সেকেন্ড) |
Exception | Apex heap size too large | Apex CPU time limit exceeded |
অপ্টিমাইজেশনের কৌশল | ডেটাসেট ফিল্টার, Batch Apex ব্যবহার করা | Loop অপ্টিমাইজ, Async Apex ব্যবহার করা |
ব্যবহার | বড় ডেটাসেট বা অনেক অবজেক্ট প্রসেস করা | বড় লজিক, Loop বা Recursive Trigger হ্যান্ডল করা |
অপ্রয়োজনীয় ডেটা হ্যান্ডেলিং এড়িয়ে চলুন: মেমোরিতে ডেটা জমা রাখার সময় শুধু প্রয়োজনীয় তথ্য রাখুন এবং বড় ডেটাসেট দ্রুত রিলিজ করুন।
Async Apex ব্যবহার: বড় ও লং রানিং অপারেশন বা বড় ডেটাসেট প্রসেসিং করার জন্য Asynchronous Apex (Batch, Future, Queueable) ব্যবহার করুন।
Debug Logs এবং Governor Limits ব্যবহার করুন: Debug Logs এবং Governor Limits মনিটরিং করে অপ্টিমাইজেশন এবং অপ্টিমাইজেশন সমস্যাগুলো চিহ্নিত করুন।
Apex Heap Size এবং CPU Time Limit Salesforce-এর Governor Limits-এর গুরুত্বপূর্ণ অংশ, যা কোডের কার্যক্ষমতা উন্নত করতে ও সীমার মধ্যে কার্যক্রম পরিচালনা করতে সহায়ক।
Governor Limit Optimization Techniques Apex কোড লেখার সময় Governor Limits মেনে চলার জন্য কিছু গুরুত্বপূর্ণ পদ্ধতি ও স্ট্র্যাটেজি, যা Salesforce প্ল্যাটফর্মের স্থায়িত্ব ও পারফরম্যান্স উন্নত করতে সাহায্য করে। Salesforce-এর মাল্টি-টেন্যান্ট আর্কিটেকচারে একাধিক ব্যবহারকারী একত্রে কাজ করার কারণে Governor Limits মেনে চলা অত্যন্ত গুরুত্বপূর্ণ।
Bulkify করার মাধ্যমে একাধিক রেকর্ডে একত্রে SOQL বা DML অপারেশন চালানো যায়। এটি SOQL বা DML অপারেশনের সংখ্যা কমিয়ে Governor Limits বজায় রাখতে সহায়ক।
public void updateAccounts(List<Account> accounts) {
List<Account> accountsToUpdate = new List<Account>();
for (Account acc : accounts) {
if (acc.Industry == 'Technology') {
acc.Rating = 'Hot';
accountsToUpdate.add(acc);
}
}
// Bulk DML Operation
if (!accountsToUpdate.isEmpty()) {
update accountsToUpdate;
}
}
Account
রেকর্ডকে একত্রে update
অপারেশন চালিয়ে Governor Limits বজায় রাখা হয়েছে।SOQL কুয়েরিতে শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো কুয়েরি করুন এবং কুয়েরিতে WHERE ক্লজ ব্যবহার করে রেকর্ড ফিল্টার করুন। এতে SOQL কুয়েরির সংখ্যা কমানো যায় এবং ডেটা ফেচিং সীমার মধ্যে থাকে।
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
Id
এবং Name
ফিল্ড এবং নির্দিষ্ট Industry
ভিত্তিক রেকর্ড ফেচ করা হয়েছে।Bulk SOQL এবং DML অপারেশন পরিচালনার জন্য Collections যেমন List, Set, এবং Map ব্যবহার করুন। এগুলো ডুপ্লিকেট রেকর্ড ম্যানেজ করতে এবং পারফরম্যান্স উন্নত করতে সহায়ক।
Set<Id> accountIds = new Set<Id>();
for (Contact con : contacts) {
accountIds.add(con.AccountId);
}
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Id IN :accountIds];
Set
ব্যবহার করে ডুপ্লিকেট Account Id অপসারণ করে একত্রে SOQL কুয়েরি করা হয়েছে।SOQL বা DML স্টেটমেন্ট লুপের ভিতরে ব্যবহার না করা উচিত। লুপের ভিতরে SOQL বা DML স্টেটমেন্ট ব্যবহার করলে Governor Limits দ্রুত পূরণ হতে পারে।
for (Account acc : accounts) {
acc.Name = 'Updated Name';
update acc; // DML inside loop - Not recommended
}
List<Account> updateAccounts = new List<Account>();
for (Account acc : accounts) {
acc.Name = 'Updated Name';
updateAccounts.add(acc);
}
update updateAccounts; // Bulk DML outside loop
বড় ডেটাসেট প্রসেসিং বা দীর্ঘমেয়াদি কাজের জন্য @future এবং Queueable Apex ব্যবহার করুন। এটি Governor Limits লঙ্ঘন না করেই আলাদা ট্রানজ্যাকশনে কাজ চালিয়ে যেতে সাহায্য করে।
@future
public static void processLargeData(List<Id> recordIds) {
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Id IN :recordIds];
for (Account acc : accounts) {
acc.Industry = 'Updated Industry';
}
update accounts;
}
SOQL কুয়েরি ব্যবহার না করে Custom Settings বা Custom Metadata থেকে ডেটা সংগ্রহ করা যায়। এতে করে SOQL কুয়েরির সংখ্যা কমে এবং Governor Limits বজায় থাকে।
Integer maxLimit = CustomSetting__c.getInstance().Max_Limit__c;
Frequently used ডেটা ক্যাশে করে রাখা Governor Limits বাঁচাতে সহায়ক, কারণ এতে ডেটা পুনরায় কুয়েরি না করেই ক্যাশ থেকে ফেচ করা যায়। Caching করার মাধ্যমে বারবার SOQL কুয়েরি না করে কোড কার্যকরী হয়।
Batch Apex ব্যবহার করে বড় ডেটাসেট ছোট ছোট ব্যাচে ভাগ করে প্রক্রিয়াকরণ করা যায়। এটি গভর্নর লিমিট বজায় রেখে বড় ডেটাসেট প্রক্রিয়া করতে সহায়ক।
public class AccountBatchJob implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext bc, List<SObject> scope) {
List<Account> accounts = (List<Account>) scope;
for (Account acc : accounts) {
acc.Name = 'Batch Updated';
}
update accounts;
}
public void finish(Database.BatchableContext bc) {
System.debug('Batch Process Completed');
}
}
Exception হ্যান্ডলিংয়ের মাধ্যমে কোডের স্থায়িত্ব বৃদ্ধি করা যায়। Try-Catch ব্লক ব্যবহার করে ত্রুটি হ্যান্ডলিং করলে অ্যাপ্লিকেশন সঠিকভাবে কাজ করতে পারে এবং গভর্নর লিমিটের সীমার মধ্যে থাকে।
কোডে নির্দিষ্ট সংখ্যা বা মান হার্ড-কোড না করে কনফিগারেবল সেটিংস ব্যবহার করা উচিত। এতে কোড আরও স্থায়ী এবং সীমাবদ্ধতার সাথে সামঞ্জস্যপূর্ণ হয়।
Governor Limit Optimization Techniques মেনে কোডিং করলে Apex কোড গভর্নর লিমিটের মধ্যে থেকে কার্যকরীভাবে কাজ করতে পারে। কিছু গুরুত্বপূর্ণ টেকনিক নিচে সারসংক্ষেপ করা হলো:
এ সকল স্ট্র্যাটেজি অনুসরণ করে Salesforce প্ল্যাটফর্মে Governor Limits বজায় রেখে কোডিং করা সম্ভব, যা অ্যাপ্লিকেশনকে স্থায়ী ও কার্যকরী করে।
common.read_more